package com.csi.dao;

import com.csi.domain.History;
import com.csi.pojo.PageBean;

import java.sql.SQLException;
import java.util.Date;
import java.util.List;
import java.util.Map;

public interface HistoryDao {

    // 增加历史记录
    void add(History history) throws SQLException;

    // 查询用户今日的所有交易金额
    Double queryTodayAmount(String userNumber) throws SQLException;

    // 查询用户全部的历史记录
    List<History> queryAll(String userNumber) throws SQLException;

    // 根据类别查询用户的历史记录
    List<History> queryByType(String userNumber,String operationType) throws SQLException;

    // 根据时间分页查询历史记录
    PageBean findPageByTime(Date date,int currentPageNumber) throws SQLException;

    // 分页查询所有历史记录
    PageBean findPageAll(int currentPageNumber) throws SQLException;

    // 根据用户编号分页查询该用户的所有历史记录
    PageBean findPageByUserNumber(int currentPageNumber,String userNumber) throws SQLException;

    // 查找历史记录里面全部的用户编号
    List<String> findAllUserNumber() throws SQLException;

    // 根据月份查询用户的历史记录
    List<History> queryByMonth(String userNumber,int year,int month) throws SQLException;

    // 根据操作类别去分页查询指定用户的历史记录
    PageBean findPageByType(int currentPageNumber,String userNumber,String operationType) throws SQLException;

    // 根据操作类别去分页查询所有用户的历史记录
    PageBean findAllPageByType(int currentPageNumber,String operationType) throws SQLException;

    // 根据日期去查询该日期的交易额
    Double findAmountByDate(Date date) throws SQLException;

    // 根据日期去查询该日期的交易数量
    Integer findNumberByDate(Date date) throws SQLException;

    // 按月份查询对应月中所有日期的交易额
    Map<Date,Double> findAmountsByMonth(int year, int month) throws SQLException;

    // 按年查询对应所有月份的交易数量
    Map<String, Integer> findNumbersByYear(int year) throws SQLException;
}
